<!DOCTYPE html>
<html>
	<head>
		<title>CSS Test: document.elementFromPoint() for overlapping, positioned regions with non-auto z-index</title>
		<link rel="author" title="Mihai Balan" href="mailto:mibalan@adobe.com">
		<link rel="help" href="http://www.w3.org/TR/css3-regions/#the-flow-into-property">
		<link rel="help" href="http://www.w3.org/TR/css3-regions/#the-flow-from-property">
		<meta name="flags" content="ahem">
		<meta name="assert" content="Test checks that document.elementFromPoint() returns the correct
		region when multiple regions are absolutely positioned, overlap and have non-auto z-index.">
		<style>
		html, body {
			margin: 0;
		}
		#content {
			font-family: Ahem;
			font-size: 20px;
			line-height: 1em;
			color: lime;
			flow-into: f;
		}
		
		.region {
			position: absolute;
			top: 50px;
			left: 50px;
			width: 100px;
			height: 100px;
			border-left: 20px solid lightblue;
			background-color: green;
			flow-from: f;
		}
		.region p {
			height: 50%;
			background-color: red;
		}

		.front {
			z-index: 42;
			border-left-color: orange;
		}
		.middle {
			z-index: 32;
			border-left-color: lightblue;
		}
		.back {
			z-index: 16;
			border-left-color: yellow;
		}

		.left {
			top: 50px;
			left: 50px;
		}
		.center {
			top: 90px;
			left: 100px;
		}
		.right {
			top: 130px;
			left: 150px;
		}

		#log {
			margin-top: 250px;
		}
		</style>
		<link rel="stylesheet" href="/resources/testharness.css">
		<script src="/resources/testharness.js"></script>
		<script src="/resources/testharnessreport.js"></script>
	</head>
	<body>
		<div id="content">
			<div id="block1">
				xxxxx<br>xxxxx<br>xxxxx<br>xxxxx<br>xxxxx
			</div>
			<div id="block2">
				xxxxx<br>xxxxx<br>xxxxx<br>xxxxx<br>xxxxx
			</div>
			<div id="block3">
				xxxxx<br>xxxxx<br>xxxxx<br>xxxxx<br>xxxxx
			</div>
		</div>
		<div class="region">
			<p>&nbsp;</p>
		</div>
		<div class="region">
			<p>&nbsp;</p>
		</div>
		<div class="region">
			<p>&nbsp;</p>
		</div>
		<div id="log"></div>
		<script>
		function applyClasses(selector, classes) {
			var elements = document.querySelectorAll(selector),
				length = elements.length;
			for (var i = 0; i < length; i++) {
				elements[i].className = "region " + classes[i];
			}
			document.body.offsetTop;
		}

		function runTests() {
			var regionsEnabled = document.querySelector(".region p").getBoundingClientRect().width == 0;

			test(function() {
				applyClasses(".region", [ "middle", "front", "back" ]);

				assert_true(regionsEnabled, "Regions is enabled");
				assert_equals(document.elementFromPoint(60, 100), document.querySelector(".front")); 
			}, "document.elementFromPoint() for point on region border, with all regions overlapping with non-auto z-index");

			test(function() {
				applyClasses(".region", [ "right middle", "left front", " center back" ]);

				assert_true(regionsEnabled, "Regions is enabled");
				assert_equals(document.elementFromPoint(60, 100), document.querySelector(".front")); 
			}, "document.elementFromPoint() for point on region border, with regions partially overlapping with non-auto z-index");

			test(function() {
				applyClasses(".region", [ "right middle", "center front", " left back" ]);

				assert_true(regionsEnabled, "Regions is enabled");
				//we're checking the "right middle" region, inside it
				assert_equals(document.elementFromPoint(180, 210), document.querySelector("#block1")); 
			}, "document.elementFromPoint() for point inside region (effectively, content node), with regions partially overlapping with non-auto z-index");
		}

		runTests();
		</script>
	</body>
</html>